RubyKaigi 2022 Day 1 Adding Type Signatures into Ruby Docs
RDoc
検索結果がアルファベット順になる
to_s
アルファベット順
ARGF
Addrinfo
Array
Benchmark::Tms
Core Class Order
Integer
Float
BigDecimal
Object
Ruby 2.3 to 3.1
Quick Search
Autocomplete
80K visitours/mo
100K pv/mo
Ruby REPL
String object at rubyapi.org
Adding type Signatures into Ruby Docs
Colby Swandale
ネコチャンを飼っている
Calibreで働いている
Type Signatures (Preview) at rubyapi.org
RDoc
書き方
ソースコードにコメント形式でドキュメントを書く
.rdocという拡張子でドキュメントを書く
rdoc . -format potコマンドで生成可能
...What is pot format?
Hint: Microsoft
PowerPoint
require 'rdoc'でProgramicallyにも生成可能
7パターンもある
手動メンテしているので罰が発生
できる!
Type Signatures for Ruby
アプリケーションでもRBSを使える
自動生成してやる
untypedが発生
型をつけてあげましょう
Gemfile
code:Gemfile
gem "steep"
code:Steepfile
target :lib do
check "lib"
check "main.rb"
...
end
code:bash
bundle exec steep check
RBSやsteepを使ってもRuntimeには無視されるので注意
Ruby APIはRBIをサポートしていない
Rubyのソースコードを取得してやる必要がある
ruby_type_signature_repository
Setup RBS environment
no_stdlib: trueにして手動でstdlibの型定義を追加
カスタム型定義を持つRBS環境をつくれる
Type Signaturesのチャレンジ
ruby-srcとは別で管理されている
人間向けに最適化されていない
人力で解読するのはツライ
Type Signaturesを人間向けに最適化したい
Human Readableにしてやる
TypeScriptの型定義っぽく書けるらしいyuiseki.icon
さらに()も省略して読みやすく
()はあったほうが読みやすい気がするが…yuiseki.icon
ドキュメントでは記号は少ないほど良いかもしれないyuiseki.icon
それが rubyapi.org のType Signatures (Preview)でやってることらしい
OSSになっている
感想
RBSで型をつけるとドキュメントもメンテナンスしやすく、読みやすくできるyuiseki.icon